package cn.com.blueInfo.bpm.person.entity;

import cn.com.blueInfo.bpm.common.entity.BaseEntity;
import cn.com.blueInfo.bpm.person.enums.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;

/**
 * 员工基本信息表
 * @author suxch
 * @since 2025-08-21 05:08:55
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "mc_osm_user_base", autoResultMap = true)
@Schema(description = "员工基本信息表")
public class UserBase extends BaseEntity {

    /** ID */
    @TableId(type = IdType.INPUT)
    @Schema(description = "ID")
    private Long id;
    /** 用户编号 */
    @Schema(description = "用户编号")
    private Integer userNum;
    /** 用户编码 */
    @Schema(description = "用户编码")
    private String userCode;
    /** 用户姓名 */
    @Schema(description = "用户姓名")
    private String userName;
    /** 性别：1-男，2-女 */
    @Schema(description = "性别：1-男，2-女")
    private UserBaseSex sex;
    /** 邮箱 */
    @Schema(description = "邮箱")
    private String email;
    /** 入职日期 */
    @Schema(description = "入职日期")
    private LocalDate entryDate;
    /** 工作电话 */
    @Schema(description = "工作电话")
    private String workPhone;
    /** 手机号 */
    @Schema(description = "手机号")
    private String mobile;
    /** 证件类型：1-身份证，2-护照 */
    @Schema(description = "证件类型：1-身份证，2-护照")
    private UserBaseIdentityType identityType;
    /** 证件编号 */
    @Schema(description = "证件编号")
    private String identityNo;
    /** 生日 */
    @Schema(description = "生日")
    private LocalDate birthday;
    /** QQ号 */
    @Schema(description = "QQ号")
    private String qq;
    /** 微信号 */
    @Schema(description = "微信号")
    private String weChat;
    /** 微信唯一编码（扫码登录用） */
    @Schema(description = "微信唯一编码（扫码登录用）")
    private String weChatId;
    /** 人员状态：1-在职，2-离职，3-待入职，4-休假 */
    @Schema(description = "人员状态：1-在职，2-离职，3-待入职，4-休假")
    private UserBaseUserStatus userStatus;
    /** 用工类型：1-正式员工，2-实习生，3-退休返聘 */
    @Schema(description = "用工类型：1-正式员工，2-实习生，3-退休返聘")
    private UserBaseEmploymentType employmentType;
    /** 紧急联系人姓名 */
    @Schema(description = "紧急联系人姓名")
    private String emergencyName;
    /** 紧急联系人电话 */
    @Schema(description = "紧急联系人电话")
    private String emergencyMobile;
    /** 学历：0-小学，1-初中，2-高中，3-中专，4-大专，5-本科，6-硕士，7-博士 */
    @Schema(description = "学历：0-小学，1-初中，2-高中，3-中专，4-大专，5-本科，6-硕士，7-博士")
    private UserBaseEducation education;
    /** 合同开始日期 */
    @Schema(description = "合同开始日期")
    private LocalDate contractStartDate;
    /** 合同结束日期 */
    @Schema(description = "合同结束日期")
    private LocalDate contractEndDate;

}
